Optimization of workload placement

ABSTRACT

A computer manages methods for determining workload placement in a computing environment. The computer receives a plurality of workloads with associated information, wherein the associated information for each workload contains at least: contract information, billing information, and resource availability information. The computer determines a profitability factor for each workload of the plurality of workloads, wherein the profitability factor is at least based on the billing information. The computer determines a penalty factor for each workload of the plurality of workloads, wherein the penalty factor is at least based on the contract information. The computer determines a preference factor for each workload of the plurality of workloads, wherein the preference factor is at least based on the resource availability information. The computer assigns a priority ordering for each of the workloads from the plurality of workloads.

FIELD OF THE INVENTION

The present invention relates generally to workloads, and moreparticularly, to optimizing workload placement in cloud computing.

BACKGROUND

Cloud computing is typically used to describe a variety of computingconcepts that involve a large quantity of computers connected over anetwork (e.g., internet connection). These computing concepts of cloudcomputing often include a collection of server computers, where theserver computers run a number of workloads that are received from theusers of the cloud. The workloads, along with virtual server hosting,often have a limited amount of physical resources capable of fulfillingsuch services. A cloud service provider typically has to maintain aninfrastructure for cloud computing, where the infrastructure can consistof server computers, storage, networks, software, cooling systems, andany other type of overhead associated with cloud computinginfrastructures.

The amount of workloads the cloud service provider receives can exceedthe operational boundaries of the infrastructure. For example, there maynot be enough computing power to run the workloads, resulting inworkloads being placed in a queue. For the cloud service provider, thismay not be an optimal business plan, since certain workloads may havehigher priority than other workloads based on a number of factors.Typically, for the cloud service provider, an important aspect ofoptimal placement of workloads is the placement providing maximumprofits and minimizing losses in proportion to operational costs.

SUMMARY

Embodiments of the present invention disclose a method, computer programproduct and computer system for determining workload placement in acomputing environment. A computer receiving, by one or more processors,a plurality of workloads with associated information, wherein theassociated information for each workload contains at least: contractinformation, billing information, and resource demand information;determining, by one or more processors, a profitability factor for eachworkload of the plurality of workloads, wherein the profitability factoris at least based on the billing information; determining, by one ormore processors, a penalty factor for each workload of the plurality ofworkloads, wherein the penalty factor is at least based on the contractinformation; determining, by one or more processors, a preference factorfor each workload of the plurality of workloads, wherein theprofitability factor and the penalty factor are utilized to determinethe preference factor and the preference factor is at least based on theresource availability information and a preferred time of day forrunning each work workload; and assigning, by one or more processors, apriority ordering for each of the workloads from the plurality ofworkloads based upon at least: the profitability factor, the penaltyfactor, and the preference factor.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a functional block diagram illustrating a distributed dataprocessing environment, in accordance with an embodiment of the presentinvention.

FIG. 2 is a flowchart depicting operational steps of an optimizationprogram for assigning priority to workloads, in accordance with anembodiment of the present invention.

FIG. 3 is a flowchart depicting operational steps of an optimizationprogram for utilizing priority assignment of workloads, in accordancewith an embodiment of the present invention.

FIG. 4 is a block diagram of components of a computer system, such asthe computer server of FIG. 1, in accordance with an embodiment of thepresent invention.

DETAILED DESCRIPTION

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer-readable mediahaving computer readable program code/instructions embodied thereon.

Any combination of computer-readable media may be utilized.Computer-readable media may be a computer-readable signal medium or acomputer-readable storage medium. A computer-readable storage medium maybe, for example, but is not limited to, an electronic, magnetic,optical, electromagnetic, or semiconductor system, apparatus, or device,or any suitable combination of the foregoing. More specific examples (anon-exhaustive list) of a computer-readable storage medium would includethe following: a portable computer diskette, a hard disk, a randomaccess memory (RAM), a read-only memory (ROM), an erasable programmableread-only memory (EPROM or Flash memory), a portable compact discread-only memory (CD-ROM), an optical storage device, a magnetic storagedevice, or any suitable combination of the foregoing. In the context ofthis document, a computer-readable storage medium may be any tangiblemedium that can contain, or store a program for use by or in connectionwith an instruction execution system, apparatus, or device.

A computer-readable signal medium may include a propagated data signalwith computer-readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer-readable signal medium may be any computer-readable medium thatis not a computer-readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer-readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java®, Smalltalk, Python, C++ or the like and conventionalprocedural programming languages, such as the “C” programming languageor similar programming languages. The program code may execute entirelyon a user's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in acomputer-readable medium that can direct a computer, other programmabledata processing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer-readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce acomputer-implemented process such that the instructions which execute onthe computer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

FIG. 1 is a functional block diagram illustrating a distributed dataprocessing environment, in accordance with one embodiment of the presentinvention. Distributed data processing environment includes servercomputer 102 and client devices 104A, 104B, and 104N interconnected overnetwork 106.

Server computer 102 may be a desktop computer, a laptop computer, atablet computer, a specialized computer server, a smartphone, or anyother computer system known in the art. In certain embodiments, servercomputer 102 represents a computer system utilizing clustered computersand components that act as a single pool of seamless resources whenaccessed through network 106, as is common in data centers and withcloud computing applications. In general, server computer 102 isrepresentative of any programmable electronic device or combination ofprogrammable electronic devices capable of executing machine-readableprogram instructions and communicating with other client devices via anetwork. In this embodiment, server computer 102 has the ability tocommunicate with other client devices to query the client devices forinformation.

Optimization program 108 residing in server computer 102 has the abilityto receive details about workloads sent from various client devices,designated client devices 104A, 104B, and 104N. Optimization program 108can also receive information pertaining to each of the workloads andoptimization program 108 can determine a profitability factor, a penaltyfactor, and a preference factor for each of the workloads based on thereceived information. Based on the factors, optimization program 108 canassign priority ordering to each of the received workloads.

Optimization program 108 can receive information from various tools andmodules not illustrated in FIG. 1. Optimization program 108 can receiveservice-level agreement (SLA) information for each of the workloads froma contract module. The contract module can also provide downtime metricsand resiliency metrics for each of the workloads. Optimization program108 can utilize the information received from the contract module todetermine the SLA cost for each of the workloads. The SLA costrepresents a penalty that a cloud service encounters for non-functioningworkloads (i.e., queued workloads) or scheduled workloads with lesserresources than agreed in a service contract.

Optimization program 108 can receive billing related information foreach of the workloads from a billing module. The billing module containscharges to a customer for workloads that, the cloud server providerreceives. Optimization program 108 can utilize the information receivedform the billing module to provide current billing data. Optimizationprogram 108 can receive status information of the infrastructure whichthe cloud service provider maintains from an inventory module. Suchinformation can include resource availability (i.e., computing power)along with quality, operating capacity, and redundancy aspects for eachof the resources. Optimization program 108 can utilize the informationto selectively schedule workloads on specific resources to minimizepenalties and maximize the overall profitability associated withworkloads.

Optimization program 108 can utilize a capacity forecaster which readsdata from various sections to forecast the utility data of a workload. Asection can be open virtualization format (OVF) files, or any othersimilar metadata format that is used to read the static resource demandsof each workload. Optimization program 108 can also utilize suchmetadata during a disaster recovery situation. Another section can beheuristics, which can be used to provide historical workload demands andworkload trends. A matrices data section can be used to provide currentdata usage of a running workload. A capacity forecaster can receiveinformation from the capacity forecaster and the inventory module tocalculate an operational cost figure for each workload.

Optimization program 108 can utilize a profit engine which receivesinformation from all the various modules. The profit engine ofoptimization program 108 can specify which workloads to run to maximizeprofits, which workloads to suspend during certain situations, and whichhigh priority workloads to assign to more reliable hardware components.Optimization program 108 can continuously run to evaluate suchparameters in real time and adjust the profitability factor, the penaltyfactor, and the preference factors for various workloads, thus shufflingthe scheduling preference of these workloads.

In general, network 106 can be any combination of connections andprotocols that will support communications between server computer 102and client device 104A, 104B, and 104N. For discussion purposes, in thisembodiment client device 104N represents a cluster of client devices,similar to client device 104A and 104B from which optimization program108 can receive workloads. Network 106 can include, for example, a localarea network (LAN), a wide area network (WAN) such as the internet, acellular network, or any combination of the preceding, and can furtherinclude wired, wireless, and/or fiber optic connections.

In one embodiment, optimization program 108 may be a web serviceaccessible via network 106 to a user of a separate device, notillustrated in FIG. 1. In another embodiment, optimization program 108may be operated directly by a user of server computer 102.

In various embodiments of the present invention, client device 104 canbe a laptop computer, a tablet computer, a netbook computer, a personalcomputer (PC), a desktop computer, a personal digital assistant (PDA), asmartphone, or any programmable electronic device capable ofcommunicating with server computer 102 via network 106.

FIG. 2 is a flowchart depicting operational steps of an optimizationprogram for assigning priority to workloads, in accordance with anembodiment of the present invention.

Optimization program 108 receives multiple workloads from multipleclient devices (step 202). In one embodiment, a cloud service providermaintains the data center and receives workloads from various clients(i.e., client devices 104A, 104B, and 104N). For discussion purposes,each workload being received by optimization program 108 is from adifferent client. Each workload can have a varying degree of computingresources required from the data center.

Optimization program 108 receives information for each of the receivedmultiple workloads (step 204). Optimization program 108 can receiveinformation from the various modules previously mentioned in thediscussion of FIG. 1. Optimization program 108 can query the variousmodules for the information pertaining to each of the multipleworkloads. In one embodiment, the cloud service provider can have a workorder number associated with each of the received multiple workloads.For example, optimization program 108 can utilize the work order numberto query a billing module to obtain billing related information for theworkload associated with the work order number. Optimization program 108can further utilize the work order number to query the contract moduleand inventory module when obtaining information for each of the multipleworkloads.

Optimization program 108 determines a profitability factor for aworkload (step 206). In one embodiment, optimization program 108 candetermine a ratio between profit for a workload and a cost the cloudservice provider incurs from performing the workload. Optimizationprogram 108 calculates the cost the cloud service provider incurs bydetermining the resource demands of the data center for the workload.For example, the resource demands can be represented by a percentage ofa data center being utilized for the workload. In another example, theresource demand can be represented by an amount of storage the workloadutilizes in the data center. Optimization program 108 calculates theprofit for a workload by taking the customer cost and removing the costthe cloud service provider incurs from performing the workload. For theparticular workload, the cloud service provider can charge cost “B” forrunning the particular workload. Optimization program 108 can determinethe profitability factor “P” by calculating using an equation such as(P)=(B−A)/A. Optimization program 108 can store the determinedprofitability factor for the workload in a designated profitabilityfactor list containing the profitability factors for the receivedmultiple workloads.

Optimization program 108 determines a penalty factor for the workload(step 208). The penalty factor is a representation of any penalties acloud service provider may incur if a particular workload is not handledas previously determined in a client agreement. In this embodiment, thepenalty factor is a Service Level Agreement (SLA) penalty factor. TheSLA penalty factor can be based on workload idle time, an amount ofresources provided for a workload, or any cost incurred by the cloudservice provider for breaching the SLA. Optimization program 108 canreceive information to determine the penalty factor from the contractmodule, where the contract module contains any penalties a client canimpose on the cloud service provider. The higher an amount of possiblepenalties for a workload, optimization program 108 determines a higherpenalty factor for the workload. Similarly, the lower an amount ofpossible penalties for a workload, optimization program 108 determines alower penalty factor for the workload.

In another embodiment, optimization program 108 may assign a lowerpenalty factor to a workload which has a lower profit factor andsimilarly can assign a higher penalty factor to a workload which has ahigher profit factor, regardless of an amount of penalties for theworkload. Since a high profit factor workload provides more business fora cloud service provider, optimization program 108 can determine a lowerpenalty factor to ensure priority is not affected regardless if anamount of penalties for the workload is high.

Optimization program 108 determines a preference factor for the workload(step 210). Optimization program 108 can utilize the preference factorwhen assigning priority ordering for the workload with respect to otherworkloads previously received in step 202. Optimization program 108utilizes the determined profitability factor and penalty factor in anoptimizer function to determine the preference of the workload. Forexample, the optimizer function of optimizer program 108 utilizes theprofitability factor to maximize the function and the penalty factor tominimize the function over a given duration of time. Optimizationprogram 108 can determine numerous preference factors for a particularworkload depending on the given duration of time provided. For example,if a recurring workload needs to run at the end of a business,optimization program 108 can assign a higher preference factor to therecurring workload for a given time such as 6:00 P.M. Optimizationprogram 108 can assign a lower preference factor to the recurringworkload for a given time such as 11 A.M.

Optimization program 108 determines if there is another workload(decision step 212). If optimization program 108 determines there isanother workload (yes branch, step 212), optimization program 108reverts back to step 206 to determine a profitability factor for theother workload based on the previously received information. Ifoptimization program 108 determines there is not another workload (“no”branch, step 212), optimization program 108 compiles all of the factorsfor each of the multiple workloads.

Optimization program 108 assigns priority ordering for the receivedmultiple workloads (step 214). In this embodiment, optimization program108 assigns priority ordering for the received workloads based on thedetermined preference factors of each workload. Workloads with higherpreference factors rank higher than workloads with lower preferencefactors. Furthermore, optimization program 108 can further assign theworkloads into different classes depending on the type of workloads. Forexample, the workload classes (e.g., Class A—Gold, Class B—Silver, andClass C—Bronze) can depend on a type of business area from whichoptimization program 108 receives the multiple workloads in step 202.Optimization program 108 can assign workloads to a workload classpertaining to the specific business area. Within the workload class,optimization program 108 can assign a priority rank based on thedetermined preference factor. Optimization program 108 can also assignpriority ordering for each workload based on the determinedprofitability factor from step 206 and the determined penalty factorfrom step 208.

In another embodiment, optimization program 108 can assign priorityordering to a workload based on preference factors relative to otherworkloads. For example, if two workloads have the same preferencefactors, optimization program 108 may assign a higher priority to theworkload with the higher profitability factor. In another example, whentwo workloads have the same preference factors, optimization program 108may assign a higher priority to the workload with the lower penaltyfactor. Optimization program 108 has the ability to assign priorityordering to a workload relative to other workloads in a specific classor other workloads in all classes. Assigning priority ordering for aworkload relative to other workloads allows for optimization program 108to continuously receive work loads and maintain the priority ordering ofthe workloads. In another embodiment, optimization program 108 candetermine not to assign priority ordering to workloads if the totalnumber of workloads does not exceed a particular value. In such asituation, optimization program 108 assigns the workloads to theavailable resources.

Upon assigning priority ordering, optimization program 108 can alter theclass and priority rank of each workload based on the relativeprofitability and liability factors of any newly received workloads.Certain situations, such as, disaster recovery and predictive failuresituations, can affect the priority ordering optimization program 108assigned. Optimization program 108 can consider such situations whenperforming operations such as, scheduling, migrations, placement,suspending, resuming, backup, and additional resource allocation inorder to maximize profitability and minimize penalties for workloadsrelative to other workloads.

FIG. 3 is a flowchart depicting operational steps of an optimizationprogram for utilizing priority assignment of workloads, in accordancewith an embodiment of the present invention.

Optimization program 108 receives a request for priority ordering ofworkloads (step 302). The request can contain information such as, atype of situation which calls for the priority ordering of theworkloads. Each situation dictates how optimization program 108 canassign priority and which factors (i.e., preference, penalty, andprofitability) to base the assignment of priority on for the workloads.An example situation in which optimization program 108 can receive arequest is during a predictive failure. The predictive failure can leadto the migration of virtual machines running on a given server to otherservers located in an infrastructure of the cloud service provider. Aworkload re-distribution situation can call for optimization program 108to provide an assignment of priority ordering for the workloads beingre-distributed. In this situation, optimization program 108 can utilizethe preference factors to assign priority ordering of the workloads tore-distribute the workloads according to the ordering.

Another example, in which optimization program 108 can receive a requestis during new workload deployment, where there may not be enoughresources in the infrastructure of the cloud service provider to performnewly deployed workloads. Optimization program 108 can utilize thepenalty factor to assign priority ordering of the workloads. Forexample, since there may not be enough resources available for the newworkloads, the workloads (i.e., current or new workloads) with thelowest penalty factor can have a lower priority compared to workloadswith higher penalty factors. As a result of priority re-ordering,optimization program 108 may suspend some of the scheduled workloads,which happen to have a lower penalty factor to make resources availablefor workloads with higher penalty factors.

Optimization program 108 can also receive a request during a disasterrecovery situation. Optimization program 108 can backup workloads with ahigher preference factor compared to workloads with a lower preferencefactor due to the higher preference factor workloads being of highervalue to the cloud service provider. Optimization program 108 can alsoassign recovery priority to workloads with a higher preference factorduring instances when the cloud service provider has a limitedrecovery-window for the high priority workloads.

Optimization program 108 determines priority ordering of the workloads(step 304). Optimization program 108 utilizes the identified situationfor which the priority ordering of workloads was requested to determinethe priority ordering of the workloads. Each situation can have adifferent priority ordering of the workloads since each situation canhave a particular factor (i.e., profitability, penalty, and preference)upon which the priority ordering is based. Optimization program 108 canperform the operational steps mentioned in the discussion of FIG. 2 toobtain the priority ordering of the workloads based on the particularfactor which is ideal in the identified situation.

Optimization program 108 determines which workloads to place based onthe determined priority ordering (step 306). In one embodiment,optimization program 108 can determine the resources available in theinfrastructure and the operating constraints of each of the resources.Optimization program 108 can determine if the resources and operatingcapabilities of the resources can run the workloads without issue. In anexample embodiment, if optimization program 108 determines there is asufficient amount of resources to run the workloads, optimizationprogram 108 may place all of the workloads in the priority orderingpreviously determined in step 304. If optimization program 108determines there is not a sufficient amount of resources to run theworkloads, optimization program 108 may place the higher priorityworkloads and suspend the lower priority workloads until resourcesbecome available for optimization program 108 to place the lowerpriority workloads.

Optimization program 108 places the determined workloads (step 308).Optimization program 108 can place particular workloads in selectivelychosen resources in the infrastructure of the cloud service provider.For example, optimization program 108 can have access to a history ofthe reliability for each of the resources in the infrastructure.Optimization program 108 can place the high priority workloads inresources which have a reliable operating history. In another example,optimization program 108 can have access to an inventory list ofresources in the infrastructure. Optimization program 108 can place thehigh priority workloads on resources with a high quality, high operatingcapacity, or high level of redundant components, where if a particularcomponent was to fail, another component can take the place of thefailed component. Placing high priority workloads in resources with ahigh level of redundant components ensures shorter down times for thehigh priority workloads. Optimization program 108 can also place theworkloads according to particular time of day, week, month, or year.Optimization program 108 can schedule workloads based on preferred timeswhen the profit factor can be maximized. For example, optimizationprogram 108 can schedule a particular workload for “X” hours for every“Y” hours (e.g., 2 hours for every 24 hours). Optimization program 108can determine an optimal time to provision a workload for maximumprofitability through use of metadata such as, OVF information of aworkload and utilize the metadata to perform scheduling assignments.

FIG. 4 depicts a block diagram of components of a computer, such asserver computer 102, operating optimization program 108 withindistributed data processing environment, in accordance with anillustrative embodiment of the present invention. It should beappreciated that FIG. 4 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Manymodifications to the depicted environment may be made.

Server computer 102 includes communications fabric 402, which providescommunications between computer processor(s) 404, memory 406, persistentstorage 408, communications unit 410, and input/output (I/O)interface(s) 412. Communications fabric 402 can be implemented with anyarchitecture designed for passing data and/or control informationbetween processors (such as microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric402 can be implemented with one or more buses.

Memory 406 and persistent storage 408 are examples of computer-readabletangible storage devices. A storage device is any piece of hardware thatis capable of storing information, such as, data, program code infunctional form, and/or other suitable information on a temporary basisand/or permanent basis. In this embodiment, memory 406 includes randomaccess memory (RAM) 414 and cache memory 416. In general, memory 406 caninclude any suitable volatile or non-volatile computer-readable storagedevice.

Optimization program 108 is stored in persistent storage 408 forexecution by one or more of computer processors 404 via one or morememories of memory 406. In this embodiment, persistent storage 408includes a magnetic hard disk drive. Alternatively, or in addition to amagnetic hard disk drive, persistent storage 408 can include a solidstate hard drive, a semiconductor storage device, read-only memory(ROM), erasable programmable read-only memory (EPROM), flash memory, orany other computer-readable storage medium that is capable of storingprogram instructions or digital information.

The media used by persistent storage 408 may also be removable. Forexample, a removable hard drive may be used for persistent storage 408.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer-readable storage medium that is also part of persistent storage408.

Communications unit 410, in these examples, provides for communicationswith other data processing systems or devices, including systems anddevices within or controlled by server computer 102. In these examples,communications unit 410 includes one or more wireless network interfacecards. Communications unit 410 may provide communications through theuse of either or both physical and wireless communications links.Computer programs and processes, such as optimization program 108, maybe downloaded to persistent storage 408 through communications unit 410,or uploaded to another system through communications unit 410.

I/O interface(s) 412 allows for input and output of data with otherdevices that may be connected to server computer 102. For example, I/Ointerface 412 may provide a connection to external devices 418 such as akeyboard, keypad, a touch screen, and/or some other suitable inputdevice. External devices 418 can also include portable computer-readablestorage media such as, for example, thumb drives, portable optical ormagnetic disks, and memory cards. Software and data used to practiceembodiments of the present invention can be stored on such portablecomputer-readable storage media and can be loaded onto persistentstorage 408 via I/O interface(s) 412. I/O interface(s) 412 may alsoconnect to a display 420.

Display 420 provides a mechanism to display data to a user and may be,for example, a touch screen or a computer monitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

What is claimed is:
 1. A method for determining workload placement in acomputing environment, the method comprising: receiving, by one or moreprocessors, a plurality of workloads with associated information,wherein the associated information for each workload contains at least:contract information, billing information, and resource demandinformation; determining, by one or more processors, a profitabilityfactor for each workload of the plurality of workloads, wherein theprofitability factor is at least based on the billing information;determining, by one or more processors, a penalty factor for eachworkload of the plurality of workloads, wherein the penalty factor is atleast based on the contract information; determining, by one or moreprocessors, a preference factor for each workload of the plurality ofworkloads, wherein the profitability factor and the penalty factor areutilized to determine the preference factor and the preference factor isat least based on the resource availability information and a preferredtime of day for running each work workload; and assigning, by one ormore processors, a priority ordering for each of the workloads from theplurality of workloads based upon at least: the profitability factor,the penalty factor, and the preference factor.
 2. The method of claim 1,wherein receiving a plurality of workloads with associated information,further comprises: identifying, by one or more processors, each workloadof the plurality of workloads; and querying, by one or more processors,one or more modules for the associated information for each workload ofthe plurality of workloads.
 3. The method of claim 1, furthercomprising: receiving, by one or more processors, a request for thepriority ordering of the plurality of workloads, wherein the requestcontains information specifying a computing environment situation; anddetermining, by one or more processors, the priority ordering of theplurality of workloads based on the computing environment situation. 4.The method of claim 1, further comprising: determining, by one or moreprocessors, to place a portion of the plurality of workloads in acomputing environment, wherein the portion is based on the assignedpriority ordering for the plurality of workloads; and placing, by one ormore processors, the plurality of workloads in the computingenvironment.
 5. The method of claim 1, wherein the contract informationincludes an amount of resources provided for each workload compared toan agreed amount of resources in the contract information.
 6. The methodof claim 1, wherein the contract information includes a cost incurredfor each instance of breaching the contract information.
 7. The methodof claim 1, wherein the billing information includes a ratio of serviceprovider profit for each workload to service provider cost for eachworkload.
 8. A computer program product for determining workloadplacement in a computing environment, the computer program productcomprising: one or more computer readable storage media; programinstructions stored on the one or more computer readable storage media,the program instructions comprising: program instructions to receive aplurality of workloads with associated information, wherein theassociated information for each workload contains at least: contractinformation, billing information, and resource demand information;program instructions to determine a profitability factor for eachworkload of the plurality of workloads, wherein the profitability factoris at least based on the billing information; program instructions todetermine a penalty factor for each workload of the plurality ofworkloads, wherein the penalty factor is at least based on the contractinformation; program instructions to determine a preference factor foreach workload of the plurality of workloads, wherein the profitabilityfactor and the penalty factor are utilized to determine the preferencefactor and the preference factor is at least based on the resourceavailability information and a preferred time of day for running eachwork workload; and program instructions to assign a priority orderingfor each of the workloads from the plurality of workloads based upon atleast: the profitability factor, the penalty factor, and the preferencefactor.
 9. The computer program product of claim 8, wherein receiving aplurality of workloads with associated information, further comprisesprogram instructions, stored on the one or more computer readablestorage media, which when executed by a processor, cause the processorto: identify each workload of the plurality of workloads; and query oneor more modules for the associated information for each workload of theplurality of workloads.
 10. The computer program product of claim 8,further comprising instructions, stored on the one or more computerreadable storage media, which when executed by a processor, cause theprocessor to: receive a request for the priority ordering of theplurality of workloads, wherein the request contains informationspecifying a computing environment situation; and determining thepriority ordering of the plurality of workloads based on the computingenvironment situation.
 11. The computer program product of claim 8,further comprising instructions, stored on the one or more computerreadable storage media, which when executed by a processor, cause theprocessor to: determine to place a portion of the plurality of workloadsin a computing environment, wherein the portion is based on the assignedpriority ordering for the plurality of workloads; and place theplurality of workloads in the computing environment.
 12. The computerprogram product of claim 8, wherein the contract information includingan amount of resources provided for each workload compared to an agreedamount of resources in the contract information.
 13. The computerprogram product of claim 8, wherein the contract information includes acost incurred for each instance of breaching the contract information.14. The computer program product of claim 8, wherein the billinginformation includes a ratio of service provider profit for eachworkload to service provider cost for each workload.
 15. A computersystem for managing methods for determining workload placement in acomputing environment, the computer system comprising: one or morecomputer processors; one or more computer readable storage media;program instructions stored on the one or more computer readable storagemedia, for execution by at least one of the one or more computerprocessors, the program instructions comprising: program instructions toreceive a plurality of workloads with associated information, whereinthe associated information for each workload contains at least: contractinformation, billing information, and resource demand information;program instructions to determine a profitability factor for eachworkload of the plurality of workloads, wherein the profitability factoris at least based on the billing information including a ratio ofservice provider profit for each workload to service provider cost foreach workload; program instructions to determine a penalty factor foreach workload of the plurality of workloads, wherein the penalty factoris at least based on the contract information; program instructions todetermine a preference factor for each workload of the plurality ofworkloads, wherein the profitability factor and the penalty factor areutilized to determine the preference factor and the preference factor isat least based on the resource availability information and a preferredtime of day for running each work workload; and program instructions toassign a priority ordering for each of the workloads from the pluralityof workloads based upon at least: the profitability factor, the penaltyfactor, and the preference factor.
 16. The computer system of claim 15,wherein receiving a plurality of workloads with associated information,further comprises program instructions, stored on the one or morecomputer readable storage media, which when executed by a processor,cause the processor to: identify each workload of the plurality ofworkloads; and query one or more modules for the associated informationfor each workload of the plurality of workloads.
 17. The computer systemof claim 15, further comprising instructions, stored on the one or morecomputer readable storage media, which when executed by a processor,cause the processor to: receive a request for the priority ordering ofthe plurality of workloads, wherein the request contains informationspecifying a computing environment situation; and determining thepriority ordering of the plurality of workloads based on the computingenvironment situation.
 18. The computer system of claim 15, furthercomprising instructions, stored on the one or more computer readablestorage media, which when executed by a processor, cause the processorto: determine to place a portion of the plurality of workloads in acomputing environment, wherein the portion is based on the assignedpriority ordering for the plurality of workloads; and place theplurality of workloads in the computing environment.
 19. The computersystem of claim 15, wherein the contract information including an amountof resources provided for each workload compared to an agreed amount ofresources in the contract information.
 20. The computer system of claim15, wherein the contract information includes a cost incurred for eachinstance of breaching the contract information.